package com.geek_alarm.android;
import android.app.Activity;
import android.text.format.DateFormat;
import android.view.View;
import kankan.wheel.widget.WheelView;
import kankan.wheel.widget.adapters.ArrayWheelAdapter;
import kankan.wheel.widget.adapters.NumericWheelAdapter;
public final class ActivityUtils {
private static final int VISIBLE_ITEMS = 3;
private ActivityUtils() {}
public static void initWheelTimePicker(Activity activity, int hour, int minute, int itemResource) {
boolean is24Hour = DateFormat.is24HourFormat(activity);
boolean isAM = hour < 12;
initHoursPicker(activity, hour, is24Hour, itemResource);
initMinutesPicker(activity, minute, itemResource);
initAMPMPicker(activity, isAM, is24Hour, itemResource);
}
private static void initHoursPicker(Activity activity, int hour, boolean is24Hour, int itemResource) {
if (!is24Hour) {
hour %= 12;
if (hour == 0) {
hour = 12;
}
hour--;
}
final WheelView hours = (WheelView) activity.findViewById(R.id.hour);
NumericWheelAdapter hourAdapter = new NumericWheelAdapter(activity, is24Hour ? 0 : 1, is24Hour ? 23 : 12);
hourAdapter.setItemResource(itemResource);
hourAdapter.setItemTextResource(R.id.text);
hours.setViewAdapter(hourAdapter);
hours.setCyclic(true);
hours.setCurrentItem(hour);
hours.setVisibleItems(VISIBLE_ITEMS);
}
private static void initMinutesPicker(Activity activity, int minute, int itemResource) {
final WheelView mins = (WheelView) activity.findViewById(R.id.mins);
NumericWheelAdapter minAdapter = new NumericWheelAdapter(activity, 0, 59, "%02d");
minAdapter.setItemResource(itemResource);
minAdapter.setItemTextResource(R.id.text);
mins.setViewAdapter(minAdapter);
mins.setCyclic(true);
mins.setCurrentItem(minute);
mins.setVisibleItems(VISIBLE_ITEMS);
}
private static void initAMPMPicker(Activity activity, boolean isAM, boolean is24Hour, int itemResource) {
final WheelView ampm = (WheelView) activity.findViewById(R.id.ampm);
if (is24Hour) {
ampm.setVisibility(View.GONE);
return;
}
ArrayWheelAdapter<String> ampmAdapter =
new ArrayWheelAdapter<String>(activity, new String[] {"AM", "PM"});
ampmAdapter.setItemResource(itemResource);
ampmAdapter.setItemTextResource(R.id.text);
ampm.setViewAdapter(ampmAdapter);
ampm.setCurrentItem(isAM ? 0 : 1);
ampm.setVisibleItems(VISIBLE_ITEMS);
}
public static int getMinute(Activity activity) {
WheelView mins = (WheelView) activity.findViewById(R.id.mins);
return mins.getCurrentItem();
}
public static int getHour(Activity activity) {
final WheelView hours = (WheelView) activity.findViewById(R.id.hour);
boolean is24Hour = DateFormat.is24HourFormat(activity);
if (is24Hour) {
return hours.getCurrentItem();
} else {
final WheelView ampm = (WheelView) activity.findViewById(R.id.ampm);
boolean isAM = ampm.getCurrentItem() == 0;
int hour = hours.getCurrentItem();
hour++;
hour %= 12;
if (!isAM) {
hour += 12;
}
return hour;
}
}
}